home *** CD-ROM | disk | FTP | other *** search
/ Ham Radio / Ham Radio CD-ROM (Emerald Software) (1995).ISO / misc / utilitys / fourier.bas (.txt) < prev    next >
Encoding:
GW-BASIC  |  1980-01-01  |  1.3 KB  |  46 lines

  1. 5  PRINT;"fourier -- k2uyh -- modified for ibm pc -- wa2tif":PRINT
  2. 10  REM FOURIER
  3. 15  PI=3.1416
  4. 20  DIM A(40), B(40), C(40), AM(100): REM PRECISION 5
  5. 30  T=1: P2=2*PI: NH=30: M=100: DT=T/M
  6. 40  REM SQUARE WAVE FUNCTION
  7. 50  REM DEF FNV(X): REM IF X<T/2 THEN FNRETURN 5
  8. 60  REM IF X=T/2 THEN FNRETURN 2.5
  9. 70  REM FNEND 0
  10. 80  REM CALC DC TERM
  11. 85  GOSUB 350
  12. 90  S=0: FOR I=0 TO M: TI=I*DT: S=S+FNV(TI): NEXT
  13. 95  GOSUB 350
  14. 100  A0=(DT/T)*(S-(FNV(0)+FNV(T))/2):  PRINT "A0= ";A0
  15. 110  REM CALC AC TERMS
  16. 120  PRINT: PRINT " N", "  A(N)", "   B(N)", "   C(N)"
  17. 130  FOR N=1 TO NH: AS=0: BS=0
  18. 140  FOR I=0 TO M: TI=I*DT: NW=P2*TI*N/T
  19. 145  GOSUB 350
  20. 150  AS=AS+FNV(TI)*COS(NW): BS=BS+FNV(TI)*SIN(NW): NEXT
  21. 155  GOSUB 350
  22. 160  A(N)=2*(DT/T)*(AS-(FNV(0)+FNV(T))/2)
  23. 170  B(N)=2*(DT/T)*BS: C(N)=SQR(A(N)^2+B(N)^2)
  24. 180  PRINT N, A(N), B(N), C(N): NEXT
  25. 190  REM SPECTRUM PLOT
  26. 200  FOR N=1 TO NH: IF CM<C(N) THEN CM=C(N)
  27. 210  NEXT: FOR N=1 TO NH: F=N/T: NC=10+INT(50*C(N)/CM)
  28. 220  PRINT F;: FOR I=10 TO NC: PRINT TAB(I); "*";: NEXT
  29. 230  PRINT: NEXT
  30. 240  REM CALC WAVEFORM
  31. 250  PRINT: PRINT "WAVEFORM"
  32. 260  FOR I=0 TO M: TI=I*DT: AM(I)=A0: W=P2*TI/T
  33. 270  FOR N=1 TO NH: AM(I)=AM(I)+A(N)*COS(N*W)+B(N)*SIN(N*W): NEXT
  34. 280  NEXT
  35. 290  REM PLOT WAVEFORM
  36. 300  FOR I=0 TO M: IF MX<AM(I) THEN MX=AM(I)
  37. 310  IF MN>AM(I) THEN MN=AM(I)
  38. 320  NEXT: FOR I=0 TO M STEP 2: TI=I*DT
  39. 330  NA=10+INT(50*(AM(I)-MN)/(MX-MN))
  40. 340  PRINT TI; TAB(NA); "*": NEXT: END
  41. 350  IF X=T/2 GOTO 360 ELSE GOTO 370
  42. 360  DEF FNV(X)=5:RETURN
  43. 370  IF X=T/2 GOTO 380 ELSE GOTO 390
  44. 380  DEF FNV(X)=2.5:RETURN
  45. 390  DEF FNV(X)=0:RETURN
  46.